package com.redpack.redpost.util.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.redpack.redpost.connection.RedpostConexion;
import com.redpack.redpost.util.to.*;

public class DireccionUsuarioAdminDao {

	
	public static DireccionUsuarioTo getDireccionUsuario(String nip,int cve_arribo) throws Exception {
		
		Connection conn = RedpostConexion.openConnection( ) ;
		conn.setAutoCommit( false ) ;
		PreparedStatement ps = null ;
		ResultSet rs = null ;

		String sql = "" ;
		
		DireccionUsuarioTo _DireccionUsuario = new DireccionUsuarioTo();

		try{			
			
			sql+=" select TU.nombre,TU.apellidos,TU.servicio,TU.correspondencia,TU.seguro,TL.cve_direccion, TL.cve_usuarioredpost, TL.consignado, TL.calle, TL.num_ext,"; 
			sql+=" TL.num_int, TL.referencias, TL.colonia, TL.cp, TL.estado, TL.ciudad, TL.delegacion, ";
			sql+=" TL.email, TL.telefono_casa, TL.telefono_oficina, TL.telefono_movil, TL.paquete, ";
			
			sql += "CASE WHEN TU.fp = '' THEN '0' ELSE 1 END as activo_forma_pago, ";
			sql += " TU.fp  , ";
			
			sql+=" TL.status";
			sql+=" FROM redpost.tbl_libreta_direcciones TL";
			sql+=" inner join redpost.TBL_ARRIBO  TA on TA.cve_direccion_alterna = TL.cve_direccion and TA.nip='"+ nip +"'";
			sql+=" inner join redpost.tbl_usuarioredpost TU on TU.cve_usuarioredpost = TL.cve_usuarioredpost";
			sql+=" where TL.paquete="+ cve_arribo +"";
		  
			ps = conn.prepareStatement( sql ) ;
			rs = ps.executeQuery();
			_DireccionUsuario.setCont(false);
			
			
			while (rs.next()) {
				_DireccionUsuario.setNombre(rs.getString("nombre") );
				_DireccionUsuario.setApellidos(rs.getString("apellidos"));
				_DireccionUsuario.setCalle(rs.getString("calle") );
				_DireccionUsuario.setEstado(rs.getString("estado") );
				_DireccionUsuario.setCiudad(rs.getString("ciudad") );
				_DireccionUsuario.setColonia(rs.getString("colonia") );
				_DireccionUsuario.setCp( rs.getInt("cp"));
				_DireccionUsuario.setDelegacion(rs.getString("delegacion") );
				//_DireccionUsuario.setNum_ext( rs.getInt("num_ext"));
				//_DireccionUsuario.setNum_int( rs.getInt("num_int"));
				_DireccionUsuario.setActivo_correspondencia( rs.getInt("correspondencia"));
				_DireccionUsuario.setActivo_seguro( rs.getInt("seguro"));
				_DireccionUsuario.setEmail(rs.getString("email"));
				_DireccionUsuario.setCont(true);
				_DireccionUsuario.setForma_pago(rs.getString("fp"));
				_DireccionUsuario.setActivo_forma_pago(rs.getInt("activo_forma_pago"));
				/*
				if(rs.getInt("servicio") == 1)
				{
					_UsuarioRedpost.setServicio_texto("SERVICIO ECOEXPRESS");
				}
				else{
					_UsuarioRedpost.setServicio_texto("SERVICIO EXPRESS");
				}
				*/
			}
			
			conn.commit( ) ;
			ps.close( ) ;
			conn.close( ) ;
			
			return _DireccionUsuario ;
			
		}catch ( Exception e ) {
			e.printStackTrace( ) ;
			return _DireccionUsuario = null ;
		} finally {
	        if (conn != null) {
	            conn.close();
	        }
			
		}
		
	}

	public static DireccionUsuarioTo getDireccionUsuarioPrincipal(String nip) throws Exception {
		
		Connection conn = RedpostConexion.openConnection( ) ;
		conn.setAutoCommit( false ) ;
		PreparedStatement ps = null ;
		ResultSet rs = null ;

		String sql = "" ;
		
		DireccionUsuarioTo _DireccionUsuario = new DireccionUsuarioTo();

		try{			
			
			sql+=" SELECT nombre,apellidos,email,servicio,correspondencia,seguro,nip,nombre, apellidos,calle, num_exterior, num_interior,num_exterior, referencias,  ";
			sql+=" colonia, cp, estado, ciudad,fp, ";
			
			sql += "CASE WHEN fp = '' THEN '0' ELSE 1 END as activo_forma_pago ";
			
			sql+=" from redpost.tbl_usuarioredpost where nip='"+ nip +"'"; 
		  
			ps = conn.prepareStatement( sql ) ;
			rs = ps.executeQuery();
			_DireccionUsuario.setCont(false);
			
			
			while (rs.next()) {
				
				_DireccionUsuario.setCalle(rs.getString("calle") );
				
				_DireccionUsuario.setCalle(rs.getString("calle") );
				_DireccionUsuario.setEstado(rs.getString("estado") );
				_DireccionUsuario.setCiudad(rs.getString("ciudad") );
				_DireccionUsuario.setColonia(rs.getString("colonia") );
				_DireccionUsuario.setCp( rs.getInt("cp"));
				
				_DireccionUsuario.setNum_ext_text(rs.getString("num_exterior"));
				_DireccionUsuario.setNum_int_text(rs.getString("num_interior"));
				_DireccionUsuario.setActivo_correspondencia( rs.getInt("correspondencia"));
				_DireccionUsuario.setActivo_seguro( rs.getInt("seguro"));
				_DireccionUsuario.setNombre(rs.getString("nombre") );
				_DireccionUsuario.setApellidos(rs.getString("apellidos"));
				_DireccionUsuario.setEmail(rs.getString("email"));
				_DireccionUsuario.setCont(true);
				_DireccionUsuario.setForma_pago(rs.getString("fp"));
				_DireccionUsuario.setActivo_forma_pago(rs.getInt("activo_forma_pago"));
				
				/*
				if(rs.getInt("servicio") == 1)
				{
					_UsuarioRedpost.setServicio_texto("SERVICIO ECOEXPRESS");
				}
				else{
					_UsuarioRedpost.setServicio_texto("SERVICIO EXPRESS");
				}
				*/
			}
			
			conn.commit( ) ;
			ps.close( ) ;
			conn.close( ) ;
			
			return _DireccionUsuario ;
			
		}catch ( Exception e ) {
			e.printStackTrace( ) ;
			return _DireccionUsuario = null ;
		} finally {
	        if (conn != null) {
	            conn.close();
	        }
			
		}
		
	}

	
	
	public static boolean saveDireccionArribo(int cve_arribo,String nip)throws Exception {
		
		boolean res = false ;
		Connection conn = null;
		try
		{	
			conn = RedpostConexion.openConnection( ) ;
			conn.setAutoCommit( false ) ;
			PreparedStatement ps = null ;
			
			String sql = "" ;
				
			
				sql += " INSERT INTO redpost.tbl_direccion_arribo( ";
				sql += " cve_arribo, nip, calle, num_ext, num_int,  ";
				sql += " referencias, colonia, cp, estado, ciudad, email, "; 
				sql += " telefono_casa, telefono_oficina, telefono_movil) ";
			            
				sql += " SELECT  ";  
				sql += " "+ cve_arribo +",nip,calle, num_exterior, num_interior, "; 
				sql += " referencias,colonia, cp, estado, ciudad,email, "; 
				sql += " tel_casa, tel_oficina, tel_movil ";
				sql += " FROM redpost.tbl_usuarioredpost ";
				sql += " where nip = '"+ nip +"' ; ";
			  
			  
				ps = conn.prepareStatement( sql ) ;
				ps.execute( ) ;

				res = true ;
				
				conn.commit( ) ;
				ps.close( ) ;
				conn.close( ) ;
				
				return res ;
				
			}
			catch ( Exception e ) 
			{
				e.printStackTrace( ) ;			
				return res ;
			} 
			finally 
			{
	            if (conn != null) 
	            {
	                conn.close();
	            }
			}
			
	}
	
	
	public static DireccionUsuarioTo getDireccionUsuarioArribo(String nip,int cve_arribo) throws Exception {
		
		Connection conn = RedpostConexion.openConnection( ) ;
		conn.setAutoCommit( false ) ;
		PreparedStatement ps = null ;
		ResultSet rs = null ;

		String sql = "" ;
		
		DireccionUsuarioTo _DireccionUsuario = new DireccionUsuarioTo();

		try{			
			
			
			sql+=" select TU.nombre,TU.apellidos,TU.servicio,TU.correspondencia,TU.seguro,DR.cve_direccion_arribo,DR.calle, DR.num_ext, ";
			sql+=" DR.num_int, DR.referencias, DR.colonia,DR.cp, DR.estado, DR.ciudad, ";
			sql+=" DR.email, DR.telefono_casa, DR.telefono_oficina, DR.telefono_movil,  ";
						
			sql+=" CASE WHEN TU.fp = '' THEN '0' ELSE 1 END as activo_forma_pago, TU.fp ";  

			sql+=" FROM redpost.tbl_direccion_arribo DR ";
			sql+=" inner join redpost.tbl_usuarioredpost TU on TU.nip = DR.nip ";
			sql+=" inner join redpost.TBL_ARRIBO  TA on TA.cve_arribo = DR.cve_arribo "; 

			sql+=" where TA.cve_arribo = "+ cve_arribo +" ";
			sql+=" and TA.nip='"+ nip +"' ";
			

			System.out.print(sql);
			ps = conn.prepareStatement( sql ) ;
			rs = ps.executeQuery();
			_DireccionUsuario.setCont(false);
			
			
			while (rs.next()) {
				_DireccionUsuario.setNombre(rs.getString("nombre") );
				_DireccionUsuario.setApellidos(rs.getString("apellidos"));
				_DireccionUsuario.setCalle(rs.getString("calle") );
				_DireccionUsuario.setEstado(rs.getString("estado") );
				_DireccionUsuario.setCiudad(rs.getString("ciudad") );
				_DireccionUsuario.setColonia(rs.getString("colonia") );
				_DireccionUsuario.setCp( rs.getInt("cp"));
				//_DireccionUsuario.setDelegacion(rs.getString("delegacion") );
				_DireccionUsuario.setNum_ext( rs.getString("num_ext"));
				_DireccionUsuario.setNum_int( rs.getString("num_int"));
				_DireccionUsuario.setActivo_correspondencia( rs.getInt("correspondencia"));
				_DireccionUsuario.setActivo_seguro( rs.getInt("seguro"));
				_DireccionUsuario.setEmail(rs.getString("email"));
				_DireccionUsuario.setCont(true);
				_DireccionUsuario.setForma_pago(rs.getString("fp"));
				_DireccionUsuario.setActivo_forma_pago(rs.getInt("activo_forma_pago"));

				
			}
			
			conn.commit( ) ;
			ps.close( ) ;
			conn.close( ) ;
			
			return _DireccionUsuario ;
			
		}catch ( Exception e ) {
			e.printStackTrace( ) ;
			return _DireccionUsuario = null ;
		} finally {
	        if (conn != null) {
	            conn.close();
	        }
			
		}
		
	}
	
	public static DireccionUsuarioTo getDireccionDeUsuario(String nip) throws Exception {
		
		Connection conn = RedpostConexion.openConnection( ) ;
		conn.setAutoCommit( false ) ;
		PreparedStatement ps = null ;
		ResultSet rs = null ;

		String sql = "" ;
		
		DireccionUsuarioTo DireccionUsuario = new DireccionUsuarioTo();

		try{			
			
			sql = "SELECT razonsocial, consignado_a, calle, num_exterior, colonia, estado, cp, nombre " +
					"from redpost.tbl_usuarioredpost " +
					"where nip='"+ nip +"'" ;
		  
			ps = conn.prepareStatement( sql ) ;
			rs = ps.executeQuery();
			DireccionUsuario.setCont(false);			
			
			if( rs.next( ) ){
				
				DireccionUsuario.setRazonSocial( rs.getString("razonsocial") ) ;
				DireccionUsuario.setConsignado( rs.getString("consignado_a") ) ;
				DireccionUsuario.setCalle( rs.getString("calle") ) ;
				DireccionUsuario.setNum_ext_text( rs.getString("num_exterior") ) ;
				DireccionUsuario.setColonia( rs.getString("colonia") ) ;
				DireccionUsuario.setEstado( rs.getString("estado") ) ;
				DireccionUsuario.setCp( rs.getInt("cp") ) ;
				DireccionUsuario.setNombre( rs.getString("nombre") ) ;
				
			}
			
			conn.commit( ) ;
			ps.close( ) ;
			conn.close( ) ;
			
			return DireccionUsuario ;
			
		}catch ( Exception e ) {
			e.printStackTrace( ) ;
			return DireccionUsuario = null ;
		} finally {
	        if (conn != null) {
	            conn.close();
	        }
			
		}
		
	}
	
	
}
